home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR09 / GRINCH_.ZIP / GRINCH.BAS
BASIC Source File  |  1993-06-12  |  9KB  |  176 lines

  1. 10 KEY OFF: CLS
  2. 20 SCREEN 0
  3. 30 WIDTH 40
  4. 40 PRINT "░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
  5. 50 PRINT "░┌───────────────────────────────────┐░"
  6. 60 PRINT "░│                                   │░"
  7. 70 PRINT "░│              0016.BAS             │░"
  8. 80 PRINT "░│            EL GRINCH              │░"
  9. 90 PRINT "░│                                   │░"
  10. 100 PRINT "░│                                   │░"
  11. 110 PRINT "░│ BROUGHT TO YOU BY THE MEMBERS OF  │░"
  12. 120 PRINT "░│      ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄      │░"
  13. 130 PRINT "░│        █   █   █ █     █   █      │░"
  14. 140 PRINT "░│        █   █▄▄▄█ █     █   █      │░"
  15. 150 PRINT "░│        █   █     █     █   █      │░"
  16. 160 PRINT "░│      ▄▄█▄▄ █     █▄▄▄▄ █▄▄▄█      │░"
  17. 170 PRINT "░│                                   │░"
  18. 180 PRINT "░│      International PC Owners      │░"
  19. 190 PRINT "░│                                   │░"
  20. 200 PRINT "░│P.O. Box 10426, Pittsburgh PA 15234│░"
  21. 210 PRINT "░│                                   │░"
  22. 220 PRINT "░└───────────────────────────────────┘░"
  23. 230 PRINT "░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
  24. 240 PRINT
  25. 250 PRINT "       PRESS ANY KEY TO CONTINUE"
  26. 260 A$ = INKEY$: IF A$ = "" THEN 260
  27. 270 WIDTH 80
  28. 280 CLS
  29. 1000 KEY 8, "SOUND ": KEY 6, ":": KEY 5, "GOSUB ": DIM M(88), O(70): KEY 9, "WIDTH 80"
  30. 1010 POKE &H417, 64: CLS : RANDOMIZE VAL(MID$(TIME$, 7)): KEY 7, "TAB(": DEF SEG = 0
  31. 1020 SCREEN 0, 0, 0: WIDTH 80: POKE &H417, 64
  32. 1030 KEY OFF: GOSUB 1820
  33. 1040 PRINT "  ********************** THIS IS THE GAME OF EL'GRINCH *************************"
  34. 1050 PRINT : PRINT
  35. 1060 PRINT TAB(27); "DO YOU NEED INSTRUCTIONS ?": PRINT
  36. 1070 PRINT TAB(24); "(TYPE `Y' FOR YES OR `N' FOR NO)"
  37. 1080 Z$ = INKEY$: IF Z$ = "" THEN 1080: CLS
  38. 1090 IF Z$ = "N" THEN 1340
  39. 1100 CLS : PRINT TAB(15); "The Grinch is a little insect sort of like a Beanbug. ": PRINT : GOSUB 2060
  40. 1110 PRINT TAB(29); "He makes a sound like this:": GOSUB 2080: GOSUB 1810
  41. 1120 PRINT : PRINT TAB(16); "He likes to hide in the bean field and eat all day.": GOSUB 2060
  42. 1130 CLS : SCREEN 1, 0: PRINT TAB(5); "THE BEAN FIELD LOOKS LIKE THIS:"
  43. 1140 PRINT
  44. 1150 FOR K = 9 TO 0 STEP -1
  45. 1160 PRINT TAB(4); K; TAB(8); "&  &  &  &  &  &  &  &  &  &": PRINT
  46. 1170 NEXT
  47. 1180 PRINT TAB(8); "A  B  C  D  E  F  G  H  I  J": GOSUB 2090
  48. 1190 GOSUB 1810
  49. 1200 CLS : PRINT TAB(4); "THIS IS WHAT A GRINCH BUG LOOKS LIKE:": GOSUB 1900
  50. 1210 LOCATE 10, 13: PRINT "FAST ISN'T HE ?"
  51. 1220 GOSUB 2060
  52. 1230 SCREEN 0, 0, 0: WIDTH 80
  53. 1240 PRINT TAB(2); "The object of the game is to discover which bean plant the Grinch is hiding in.": PRINT : PRINT
  54. 1250 PRINT TAB(2); "Each plant is identified by letter and number found along the fence rows.": PRINT : PRINT
  55. 1260 PRINT TAB(2); "Enter the location of the plant where you think the Grinch is, first by number,"
  56. 1270 PRINT TAB(2); "then by letter. Each time you select a number/letter pair, the bush you have": PRINT
  57. 1280 PRINT TAB(2); "selected will disappear. The Grinch becomes frightened and chirps. Since he": PRINT
  58. 1290 PRINT TAB(2); "is not as frightened when you are far away as when you are close, the farther": PRINT
  59. 1300 PRINT TAB(2); "away you are, the longer he chirps. You must locate him by SOUND ONLY !": PRINT : PRINT : PRINT
  60. 1310 PRINT TAB(13); "(REMEMBER THE CLOSER YOU AER THE SHORTER THE CHIRPS.)"
  61. 1320 COLOR 15, 0: PRINT : PRINT : PRINT TAB(25); "PRESS ANY KEY TO BEGIN PLAY."
  62. 1330 G$ = INKEY$: IF G$ = "" THEN 1330
  63. 1340 A = INT(10 * RND(1)): J = 0: RESTORE
  64. 1350 B = INT(10 * RND(A))
  65. 1360 IF A = 0 THEN 1340
  66. 1370 GOSUB 2080
  67. 1380 CLS : SCREEN 1, 0: FOR K = 9 TO 0 STEP -1
  68. 1390 PRINT TAB(4); K; TAB(8); "&  &  &  &  &  &  &  &  &  &": PRINT
  69. 1400 NEXT
  70. 1410 PRINT TAB(8); "A  B  C  D  E  F  G  H  I  J": GOSUB 2080
  71. 1420 LOCATE 22, 5: PRINT "  ";
  72. 1430 LOCATE 23, 5: PRINT "WHICH PLANT IS THE GRINCH IN ? ";
  73. 1440 LOCATE 25, 5: PRINT "ENTER NUMBER: ";
  74. 1450 IF INKEY$ <> "" THEN 1450
  75. 1460 N$ = INKEY$: IF N$ = "" THEN 1460
  76. 1470 U = ASC(N$): IF U < 48 OR U > 57 THEN GOSUB 1790: 'THROWS AWAY NON-NUMBERS
  77. 1480 IF N$ = CHR$(32) THEN 1440
  78. 1490 Y = VAL(N$): LOCATE 25, 19: PRINT N$;
  79. 1500 LOCATE 25, 22: PRINT "ENTER LETTER:";
  80. 1510 IF INKEY$ <> "" THEN 1510
  81. 1520 A$ = INKEY$: IF A$ = "" THEN 1520
  82. 1530 V = ASC(A$): IF V < 64 OR V > 74 THEN GOSUB 1780: 'THROWS AWAY NON-LETTERS
  83. 1540 X = ASC(A$) - 64: LOCATE 25, 36: PRINT A$; : IF X < 1 OR X > 10 THEN 1500
  84. 1550 C = ((3 * X) + 5): R = (19 - (2 * Y)): LOCATE R, C: PRINT CHR$(32): 'REMOVES DOTS
  85. 1560 IF X < 1 OR X > 10 THEN 1500
  86. 1570 D = SQR(((ABS(X - A)) ^ 2) + ((ABS(Y - B)) ^ 2)): 'STRAIGHT LINE DISTANCE TO GRINCH
  87. 1580 D = INT(10 * D) / 10: ' ROUND OFF D
  88. 1590 IF D = 0 GOTO 2330
  89. 1600 GOSUB 1860
  90. 1610 J = J + 1: IF J > 6 THEN 1630
  91. 1620 GOSUB 2140: GOTO 1430
  92. 1630 LOCATE 23, 4: PRINT "WAN'T TO KNOW WHERE THE GRINCH IS?"; : BEEP: SOUND 1000, 10: GOSUB 2110
  93. 1640 LOCATE 25, 12: PRINT "(TYPE `Y' OR `N')          ";
  94. 1650 H$ = INKEY$: IF H$ = "" THEN 1650
  95. 1660 IF H$ = "N" THEN 1700
  96. 1670 LOCATE 25, 10: PRINT "THE GRINCH WAS AT "; B; CHR$(A + 64); : GOSUB 2060
  97. 1680 GOSUB 1810
  98. 1690 GOTO 2260
  99. 1700 GOSUB 2100: LOCATE 23, 7: PRINT "WOULD YOU LIKE A LITTLE HINT ?"; : PLAY "CAF"
  100. 1710 LOCATE 25, 12: PRINT "(TYPE `Y' OR `N')";
  101. 1720 J$ = INKEY$: IF J$ = "" THEN 1720
  102. 1730 IF J$ = "N" THEN 1380
  103. 1740 GOSUB 2100
  104. 1750 LOCATE 23, 5: PRINT "THE GRINCH IS HIDIHG IN ROW "; B; "."; : GOSUB 1810
  105. 1760 LOCATE 25, 5: PRINT "NOW GO BACK THERE AND GET HIM!"; : GOSUB 2070
  106. 1770 J = 2: GOSUB 2130: GOTO 1430
  107. 1780 SOUND 40, 10: SOUND 32767, 10: A$ = CHR$(32): RETURN: 'SETS A$ TO A BLANK
  108. 1790 SOUND 40, 10: SOUND 32767, 10: N$ = CHR$(32): RETURN:
  109. 1800 STOP
  110. 1810 FOR P = 2000 TO 3000 STEP 100: SOUND P, .5: NEXT: SOUND 30000, 2: FOR Q = 2000 TO 3000 STEP 100: SOUND Q, .5: NEXT: RETURN:
  111. 1820 FOR S = 1 TO 5 STEP 1: REM  5 CHIRPS
  112. 1830 FOR O = 3000 TO 4000 STEP 1000: SOUND O, .5: NEXT: SOUND 30000, 2
  113. 1840 NEXT
  114. 1850 RETURN
  115. 1860 FOR S = 1 TO D STEP 1: ' AUTO CHIRP DISTANCE ROUTENE
  116. 1870 FOR T = 3000 TO 3000 STEP 1000: SOUND T, .5: NEXT: SOUND 30000, 2
  117. 1880 NEXT
  118. 1890 RETURN
  119. 1900 FOR A = 2 TO 40 STEP 1
  120. 1910 LOCATE 23, A - 1: PRINT " "
  121. 1920 LOCATE 23, A: PRINT "*"
  122. 1930 NEXT
  123. 1940 LOCATE 22, 40: PRINT " "
  124. 1950 RETURN
  125. 1960 O(0) = 0
  126. 1970 O(39) = 5: O(40) = 7: O(41) = 8: O(42) = 9
  127. 1980 O(43) = 10: O(44) = 11: O(45) = 13: O(46) = 14
  128. 1990 O(47) = 15: O(48) = 16: O(49) = 17: O(50) = 18
  129. 2000 O(51) = 19: O(52) = 21: O(53) = 22: O(54) = 23
  130. 2010 O(55) = 24: O(56) = 25: O(57) = 27: O(58) = 28
  131. 2020 O(59) = 29: O(60) = 30: O(61) = 31: O(62) = 32
  132. 2030 O(63) = 33: O(64) = 35: O(65) = 36: O(66) = 37
  133. 2040 O(67) = 38: O(68) = 39: O(69) = 40: O(70) = 42
  134. 2050 GOTO 2380
  135. 2060 FOR S = 1 TO 10: SOUND 30000, 5: NEXT: RETURN:
  136. 2070 FOR S = 1 TO 15: SOUND 30000, 5: NEXT: RETURN:
  137. 2080 FOR S = 1 TO 5: SOUND 30000, 5: NEXT: RETURN:
  138. 2090 FOR S = 1 TO 20: SOUND 30000, 5: NEXT: RETURN:
  139. 2100 FOR I = 1 TO 39: LOCATE 23, I: PRINT " "; : NEXT: ' ERASES LINES 23-25
  140. 2110 FOR I = 1 TO 39: LOCATE 24, I: PRINT " "; : NEXT
  141. 2120 FOR I = 1 TO 39: LOCATE 25, I: PRINT " "; : NEXT: RETURN
  142. 2130 FOR I = 1 TO 39: LOCATE 23, I: PRINT " "; : NEXT: ' ERASES LINES 23 & 25
  143. 2140 FOR I = 1 TO 39: LOCATE 25, I: PRINT " "; : NEXT: RETURN
  144. 2150 COLOR 31, 0: PRINT "COLOR 31,0": GOSUB 2060
  145. 2160 COLOR 15, 0: PRINT "COLOR 15,0": GOSUB 2060
  146. 2170 COLOR 0, 7: PRINT "COLOR 0,7": GOSUB 2060
  147. 2180 COLOR 15, 0
  148. 2190 DATA 52,2,57,2,0,2,52,2,57,2,0,2,52,2,57,6,0,4,52,2,57,2,59,2,57,2,56,4
  149. 2200 DATA 57,2,59,2,0,8,52,2,56,2,0,2,52,2,56,2,0,2,52,2,56,6,0,4,52,2
  150. 2210 DATA 56,2,57,2,56,2,54,4,56,2,57,2,0,6,64,2,63,2,64,2,61,2,60,2,61,2
  151. 2220 DATA 57,2,56,2,57,2,52,2,0,4,49,2,50,2,52,2,54,2,56,2,57,2,59,2,61,2
  152. 2230 DATA 62,2,59,2,0,4,62,2,61,2,62,2,59,2,58,2,59,2,56,2,55,2,56,2,52,2
  153. 2240 DATA 0,4,64,2,63,2,64,2,66,2,64,2,62,2,61,2,59,2,57,2
  154. 2250 DATA -1,-1
  155. 2260 CLS : PRINT TAB(7); "WOULD YOU LIKE TO PLAY AGAIN?": PRINT
  156. 2270 PRINT TAB(12); "(TYPE `Y' OR `N')"
  157. 2280 O$ = INKEY$: IF O$ = "" THEN 2280
  158. 2290 IF O$ = "Y" THEN 1340
  159. 2300 CLS : PRINT TAB(14); "SO LONG AMIGO !": GOSUB 1820
  160. 2310 GOSUB 2070
  161. 2320 CLS : STOP
  162. 2330 CLS : LOCATE 12, 12, 0: PRINT "CONGRATULATIONS!!"
  163. 2340 T = J + 1: PRINT : PRINT TAB(1); "You found the Grinch after only"; T; "tries."
  164. 2350 FOR I = 7 TO 88: M(I) = 30 * (2 ^ (1 / 12)) ^ (I - 6): NEXT
  165. 2360 FOR I = 0 TO 6: M(I) = 32767: NEXT
  166. 2370 CLS : GOTO 1960
  167. 2380 READ J, K: IF J = -1 THEN 2260
  168. 2390 POKE 106, 0: Q = O(J) - 5: R = INT((O(J)) / 3): IF J > 64 OR J < 39 THEN 2410
  169. 2400 LOCATE R, Q: PRINT CHR$(2): GOTO 2410
  170. 2410 SOUND M(J), K: IF J = 0 AND K = 1 THEN 2430
  171. 2420 SOUND 32767, 1
  172. 2430 IF J > 64 OR J < 39 THEN 2380
  173. 2440 LOCATE R, Q: PRINT CHR$(32): GOTO 2380
  174. 2450 GOTO 2380
  175.  
  176.